---
title: lefthook
description: lefthook ile sahnelenmiş Git dosyalarınızda Ultracite'i otomatik olarak çalıştırın
---

Ultracite, hızlı ve güçlü bir Git hook yöneticisi olan [lefthook](https://lefthook.dev/) ile sorunsuz entegrasyon sağlar. Bu entegrasyon, her commit öncesinde kodunuzun düzgün biçimlendirildiğinden emin olmak için pre-commit hook'larını otomatik olarak ayarlar.

## lefthook nedir?

lefthook, Node.js ve Go projeleri için hızlı, yerel bir Git hook yöneticisidir. Basit, hızlı ve güçlü olacak şekilde tasarlanmıştır; ekip genelinde repository'nize commit edilebilen yapılandırma dosyalarıyla Git hook'larını yönetmenizi sağlar.

## Ultracite lefthook'u Nasıl Kullanır

Projenizde Ultracite'i başlattığınızda, lefthook'u her commit öncesinde kod biçimlendirmesini çalıştıracak şekilde otomatik olarak yapılandırabilir. Bu, şunları garanti eder:

- Tüm commit edilen kodun tutarlı biçimlendirme standartlarına uyması
- Kod kalite kontrollerinin otomatik olarak uygulanması
- Ekip üyelerinin kodu manuel olarak biçimlendirmeyi hatırlama zorunluluğunun ortadan kalkması
- Depo içinde temiz, tutarlı bir kod stilinin korunması

## Pre-commit Hook Davranışı

Ultracite'nin lefthook entegrasyonu şu komutu çalıştıran bir pre-commit hook oluşturur:

```bash
npx ultracite fix
```

Bu komut:
- Biome'un linter'ını ve biçimlendiricisini kod tabanınızda çalıştırır
- Mümkün olduğunda biçimlendirme sorunlarını otomatik olarak düzeltir
- Tüm sahnelenmiş dosyaların proje kod standartlarınıza uygun olmasını sağlar
- Biçimlendirme uyumsuzluğu getirecek commit'leri engeller

## Otomatik Kurulum

Başlatma süreci sırasında (`ultracite init`) lefthook seçeneğini seçerseniz, Ultracite:

1. **lefthook'u Yükler**: lefthook'u projenize bir geliştirme bağımlılığı olarak ekler
2. **lefthook'u Başlatır**: Git hook'ları ayarlamak için `lefthook install` çalıştırır
3. **Yapılandırma Oluşturur**: biçimlendirme komutunu içeren `lefthook.yml` dosyasını oluşturur
4. **Mevcut Kurulumları Ele Alır**: Zaten lefthook yapılandırmanız varsa, mevcut yapılandırmanızı üzerine yazmak yerine günceller

## Entegrasyon Detayları

lefthook entegrasyonu birkaç akıllı özelliği içerir:

### Bağımlılık Yönetimi
- Projenizin paket yöneticisini kullanarak lefthook'u otomatik olarak bir dev bağımlılığı olarak yükler
- Uygun paket yöneticisi komutunu kullanır (`npm install -D`, `yarn add -D`, `pnpm add -D`, vb.)
- Git hook'ları başlatmak için `lefthook install` çalıştırır

### Yapılandırma Yönetimi
- **Yeni Projeler**: ultracite fix komutunu içeren yeni bir `lefthook.yml` dosyası oluşturur
- **Mevcut Projeler**: Ultracite komutunu mevcut lefthook yapılandırmanıza ekler, daha önce yapılandırmış olabileceğiniz diğer hook'ları korur

### Dosya Yapısı
Entegrasyon şu dosyayı oluşturur veya değiştirir:
```
lefthook.yml    # Contains the formatting command configuration
```

## Faydalar

- **Ekip Tutarlılığı**: Her ekip üyesine aynı biçimlendirme otomatik olarak uygulanır
- **Sıfır Yapılandırma**: Anlamlı varsayılanlarla kutudan çıktığı gibi çalışır
- **Hızlı Performans**: lefthook Go ile yazılmıştır ve son derece hızlıdır
- **Esneklik**: Ek komutlar ve hook'larla kolayca genişletilebilir
- **Platformlar Arası**: Farklı işletim sistemlerinde tutarlı şekilde çalışır

## İş Akışı Entegrasyonu

lefthook entegrasyonu geliştirme iş akışınıza sorunsuzca uyum sağlar:

1. **Geliştirici kod dosyalarında değişiklik yapar**
2. **Commit için dosyaları sahneler** `git add` ile
3. **Commit etmeye çalışır** `git commit` ile
4. **lefthook pre-commit hook'unu tetikler** otomatik olarak
5. **Ultracite çalışır** ve sahnelenmiş dosyaları biçimlendirir
6. Biçimlendirme başarılı olursa **commit devam eder**, otomatik olarak düzeltilemeyen sorunlar varsa **başarısız olur**

## Özelleştirme

Ultracite mantıklı varsayılanları ayarlasa da davranışı özelleştirebilirsiniz:

- Ek komutlar veya hook'lar eklemek için `lefthook.yml` dosyasını değiştirin
- Biçimlendirme kurallarını ayarlamak için Biome ayarlarını yapılandırın
- Ultracite'in biçimlendirmesiyle birlikte diğer pre-commit kontrollerini ekleyin
- lefthook'un güçlü paralel yürütme ve koşullu mantık özelliklerini kullanın

## Sorun Giderme

### Hook Çalışmıyor
Pre-commit hook çalışmıyorsa:
- lefthook'un yüklü olduğundan emin olun: `npm ls lefthook`
- `lefthook.yml` dosyasının var olduğunu ve ultracite komutunu içerdiğini kontrol edin
- Depoda Git hook'larının etkin olduğundan emin olun
- Hook'ları yeniden yüklemek için `lefthook install` çalıştırın

### İzin Sorunları
lefthook Git hook izinlerini otomatik olarak yönetir, ancak sorunla karşılaşırsanız:
- `lefthook install` komutunu tekrar çalıştırmayı deneyin
- Git yapılandırmanızın hook'lara izin verdiğini kontrol edin

### Hook'ları Atlamak
Pre-commit hook'unu atlamanız gereken nadir durumlarda:
```bash
git commit --no-verify
```

Bunu seyrek kullanın; çünkü bu, kod tabanınızın tutarlı kalmasını sağlayan otomatik biçimlendirmeyi atlar.

## Yapılandırma Örneği

Aşağıda `lefthook.yml` yapılandırmasının nasıl göründüğüne dair örnek verilmiştir:

```yaml
pre-commit:
  jobs:
    - run: npx ultracite fix
      glob: 
        - "*.js"
        - "*.jsx"
        - "*.ts"
        - "*.tsx"
        - "*.json"
        - "*.jsonc"
        - "*.css"
      stage_fixed: true
```

Bu yapılandırma:
- Yalnızca JavaScript, TypeScript, JSON ve CSS dosyalarında çalışır
- Biçimlendirici tarafından düzeltilen herhangi bir dosyayı otomatik olarak sahneler
- Daha iyi performans için etkili `jobs` sözdizimini kullanır

Bu yapılandırmayı ek işler içerecek şekilde genişletebilirsiniz:

```yaml
pre-commit:
  jobs:
    - run: npx ultracite fix
      glob: 
        - "*.js"
        - "*.jsx"
        - "*.ts"
        - "*.tsx"
        - "*.json"
        - "*.jsonc"
        - "*.css"
      stage_fixed: true
    - run: npm test
      glob: "*.{js,ts}"
    - run: tsc --noEmit
      glob: "*.{ts,tsx}"
```